『プログラマーのためのCPU入門 』
https://gyazo.com/84a5648bc6a614d66b9a30bb870d5b63
よみてぇ〜mrsekut.icon
序文
第1章 CPUは如何にしてソフトウェアを高速に実行するのか 1.1 CPUはソフトウェアを「命令流」として見てる
1.2 CPUごとにどのような命令があるか
1.3 CPUで人から見えるソフトウェアをそのまま扱っていない理由
1.4 プログラムはどのようなCPUの命令列に変換されるか
第2章 命令の密度を上げるさまざまな工夫
2.1 逐次処理
2.2 パイプライン化
2.3 スーパースカラ化
2.4 スーパーパイプライン化
2.5 スーパースカラ+スーパーパイプライン化
2.6 本章のまとめ
第3章 データ依存関係
3.1 データ依存関係とは
3.2 真のデータ依存関係のスーパーパイプライン化への影響
3.3 真のデータ依存関係のスーパースカラ化への影響
3.4 アウトオブオーダー実行による緩和
3.5 再順序化(リオーダー)の必要性
3.6 真ではないデータ依存関係への影響を解消する
3.7 ソフトウェアによる緩和
3.8 命令レイテンシの計測実験
3.9 本章のまとめ
第4章 分岐命令
4.1 分岐命令とその課題
4.2 分岐命令の種類
4.3 分岐予測による緩和
4.4 分岐予測ミスの影響と要因
4.5 ソフトウェアによる緩和
4.6 予測ミス率の計測実験
4.7 本章のまとめ
第5章 キャッシュメモリ
5.1 メモリアクセスに伴うパイプラインの停滞
5.2 キャッシュメモリによる緩和
5.3 初回のアクセスは遅い(初期参照ミス)
5.4 容量を超えるアクセスは遅い(容量性ミス)
5.5 アドレスの一部が競合するアクセスも遅い(競合性ミス)
5.6 キャッシュミスの測定
5.7 本章のまとめ
第6章 仮想記憶
6.1 仮想記憶でできること
6.2 アドレス変換に伴うメモリアクセス
6.4 TLBは外れる
6.5 ソフトウェアによる緩和
6.6 仮想記憶についての補足
6.7 TLBミスの計測実験
6.8 本章のまとめ
第7章 I/O
7.1 I/O アクセスの方法
7.2 I/O アクセスで実現できること
7.3 I/O アクセスは遅い
7.4 ハードウェアによる支援
7.5 ソフトウェアによる緩和
7.6 I/O の挙動を確認するアセンブリプログラム例
7.7 本章のまとめ
第8章 システムコール、例外、割り込み
8.1 用語の定義
8.2 システムコールとその利用シーン
8.3 例外とその利用シーン
8.4 割り込みとその利用シーン
8.5 例外・割り込み系の振る舞い
8.6 例外・割り込み系がCPUの動作を遅くする背景
8.7 ソフトウェアによる対策
8.8 システムコール、例外、割り込みについての実験
8.9 本章のまとめ
第9章 マルチプロセッサ
9.1 マルチプロセッサの多様な方式
9.2 組み合わせるCPUの種類による分類
9.3 命令流の独立性による分類
9.4 メモリアドレス空間の共有と主記憶の配置による分類
9.5 マルチプロセッサを活かすためには
9.6 データ共有によるソフトウェア間の協調
9.7 共有メモリ型マルチプロセッサ上のソフトウェアを遅くする要因
9.8 本章のまとめ
第10章 キャッシュコヒーレンス制御
10.1 CPUごとにキャッシュを搭載することの影響
10.2 キャッシュコヒーレンス制御による解決
10.3 MSI プロトコルの概要
10.4 キャッシュコヒーレンス制御は遅い
10.5 フォールスシェアリングでさらに遅い
10.6 ソフトウェアによる緩和
10.7 コヒーレンスミスについての実験
10.8 本章のまとめ
第11章 メモリ順序付け
11.1 メモリアクセスの順序は入れ替わる
11.2 メモリアクセス順序が入れ替わるメカニズム
11.3 メモリアクセス順序の入れ替えによる問題
11.4 メモリ順序付けによる解決
11.5 メモリ順序付けは遅い
11.6 ソフトウェアによる緩和
11.7 メモリ順序付けの挙動を見るプログラム
11.8 本章のまとめ
第12章 不可分操作
12.1 マルチプロセッサにおける共有データの更新
12.2 同一アドレスへの複数回のメモリアクセスの課題
12.3 不可分操作による解決
12.4 不可分操作はソフトウェアを遅くすることがある
12.5 ソフトウェアによる緩和
12.6 不可分操作についての実験
12.7 本章のまとめ
第13章 高速なソフトウェアを書く際には何に注目すべきか
13.1 性能劣化による影響の度合い
13.2 性能劣化の要因を制御できるか
13.3 結局、何を優先すればいいか
付録A CPUについてさらに広く深く知るには
A.1 書籍
A.2 学術論文など
A.3 特許文献
A.4 オープンソースハードウェア
A.5 講義資料
A.6 特定のCPUに関する情報
付録B 各CPUの基本的な命令
B.1 代表的な命令の例
B.2 命令の組み合わせ例
付録C 現代的なCPUの実装例(BOOM)
C.1 BOOMのパイプライン構成例
C.2 BOOMについての情報源
付録D マイクロオペレーション方式と、その命令レイテンシ
D.1 複雑な命令の実装方式
D.2 マイクロオペレーション方式における命令のレイテンシ
D.3 個別発行制御におけるレイテンシの揺れ
付録E GPUおよびベクトル方式におけるパイプラインの高密度化の工夫
E.1 GPUにおける高密度化のアプローチ
E.2 ベクトル方式における高密度化のアプローチ
付録F CPUの性能向上の物理的な難しさ
F.1 動作周波数と論理ゲートの段数
F.2 論理ゲートの物理的な特徴とCPU性能
あとがき
参考文献
索引
著者について